JS - array - filter method
Syntaxis
array.filter(function(currentValue,index,arr), thisValue)
Parameters
Parameter | Beschrijving | ||||||||
---|---|---|---|---|---|---|---|---|---|
function(currentValue, index, arr) | verplicht, een functie die voor elk element in de array uitgevoerd zal worden Functie argumenten:
|
||||||||
thisValue | optioneel: een waarde die aan de functie meegegeven kan worden en die als haar "this" waarde kan optreden |
Toepassing
Maar wat als ik alleen een gedeelte van de array wil transformeren?
Veronderstel dat de bron-array een aantal waarden heeft die je u wil transformeren, en een aantal waarden die je wil negeren. Dat kan niet met de map methode alleen want hiervoor zijn het aantal invoerwaarden altijd gelijk aan het aantal uitvoerwaarden.
Bijvoorbeeld, je wilt de oneven getallen verdubbelen, maar de even getallen negeren. Dat kan je met devolgde constructie:
var numberList = [1, 2, 3, 4, 5, 6]; var newNumberList = []; for(var i = 0; i < numberList.length; i++) { if(numberList[i] % 2 !== 0) { newNumberList[i] = numberList[i] * 2; } } console.log("The doubled numbers are", newNumberList); // [2, 6, 12]
Dat kan je met de map
en de filter
methode doen:
var numberList = [1, 2, 3, 4, 5, 6]; var newNumberList = numberList.filter(function(number) { return (number % 2 !== 0); }).map(function(number) { return number * 2; }); console.log("The doubled numbers are", newNumberList); // [2, 6, 12]
De filter
callback respecteert dezelfde niet muteren
en veroorzaak geen neveneffecten
regels als de map
methode. Enkel de bewerkingen zijn verschillend.
De geretourneerde waarde van de filter
callback moet een boolean
zijn. Die geeft aan of de oorspronkelijke waarde in het resultaat moet worden opgenomen (true
) of eruit moet worden gelaten (false
). Je moet dus niet de waarde zelf retourneren maar een boolean
. Je kan de waarde niet wijzigen vanuit de callback. De return waarde bepaalt of de waarde zal worden opgenomen in het resultaat of niet.
Bronnen
- Una Kravets, An Illustrated (and Musical) Guide to Map, Reduce, and Filter Array Methods, Mar 26, 2019